//https://leetcode.cn/problems/move-zeroes/description/
//移动零
//给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。请注意 ，必须在不复制数组的情况下原地对数组进行操作。

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        size_t pre = 0;
        while(pre < nums.size() && nums[pre] != 0){pre++;}
        for(size_t i = pre + 1; i < nums.size(); i++)
        {
            if(nums[i] != 0)
            {
                swap(nums[pre], nums[i]);
                while(pre < nums.size() && nums[pre] != 0){pre++;}
                if(pre > i)
                    i = pre + 1;
            }
        }
    }
};